张店网站制作价格低,企业信息公开网官网,wordpress 微信服务号,wordpress首屏加载速度返回#xff1a;OpenCV系列文章目录#xff08;持续更新中......#xff09;
上一篇#xff1a;OpenCV使用通用内部函数对代码进行矢量化
下一篇:使用OpenCV4.9的随机生成器和文本 目标 在本教程中#xff0c;您将学习如何#xff1a;
使用 OpenCV 函数 line() 画一… 返回OpenCV系列文章目录持续更新中......
上一篇OpenCV使用通用内部函数对代码进行矢量化
下一篇:使用OpenCV4.9的随机生成器和文本 目标 在本教程中您将学习如何
使用 OpenCV 函数 line() 画一条线使用 OpenCV 函数 ellipse()绘制椭圆使用 OpenCV 函数 rectangle()绘制矩形使用 OpenCV 函数 circle() 画一个圆使用 OpenCV 函数 fillPoly()绘制填充多边形 OpenCV理论 在本教程中我们将大量使用两种结构cv::P oint 和 cv::Scalar 点
它表示一个二维点由其图像坐标 \x\ 和 \y\ 指定。我们可以将其定义为
C:
Point pt;
pt.x 10;
pt.y 8; Java:
Point pt new Point();
pt.x 10;
pt.y 8;
or
C:
Point pt Point(10, 8); Java:
Point pt new Point(10, 8); 标量
表示一个 4 元素向量。Scalar 类型在 OpenCV 中广泛用于传递像素值。在本教程中我们将广泛使用它来表示 BGR 颜色值3 个参数。如果不打算使用最后一个参数则无需定义它。让我们看一个例子如果我们被要求一个颜色参数我们给出 Scalar( a, b, c ) 我们将定义一个 BGR 颜色例如蓝色 a、绿色 b 和红色 c
代码 此代码位于 OpenCV 示例文件夹中。否则你可以从这里下载
C:
#include opencv2/core.hpp
#include opencv2/imgproc.hpp
#include opencv2/highgui.hpp#define w 400using namespace cv;void MyEllipse( Mat img, double angle );
void MyFilledCircle( Mat img, Point center );
void MyPolygon( Mat img );
void MyLine( Mat img, Point start, Point end );int main( void ){char atom_window[] Drawing 1: Atom;char rook_window[] Drawing 2: Rook;Mat atom_image Mat::zeros( w, w, CV_8UC3 );Mat rook_image Mat::zeros( w, w, CV_8UC3 );MyEllipse( atom_image, 90 );MyEllipse( atom_image, 0 );MyEllipse( atom_image, 45 );MyEllipse( atom_image, -45 );MyFilledCircle( atom_image, Point( w/2, w/2) );MyPolygon( rook_image );rectangle( rook_image,Point( 0, 7*w/8 ),Point( w, w),Scalar( 0, 255, 255 ),FILLED,LINE_8 );MyLine( rook_image, Point( 0, 15*w/16 ), Point( w, 15*w/16 ) );MyLine( rook_image, Point( w/4, 7*w/8 ), Point( w/4, w ) );MyLine( rook_image, Point( w/2, 7*w/8 ), Point( w/2, w ) );MyLine( rook_image, Point( 3*w/4, 7*w/8 ), Point( 3*w/4, w ) );imshow( atom_window, atom_image );moveWindow( atom_window, 0, 200 );imshow( rook_window, rook_image );moveWindow( rook_window, w, 200 );waitKey( 0 );return(0);
}void MyEllipse( Mat img, double angle )
{int thickness 2;int lineType 8;ellipse( img,Point( w/2, w/2 ),Size( w/4, w/16 ),angle,0,360,Scalar( 255, 0, 0 ),thickness,lineType );
}void MyFilledCircle( Mat img, Point center )
{circle( img,center,w/32,Scalar( 0, 0, 255 ),FILLED,LINE_8 );
}void MyPolygon( Mat img )
{int lineType LINE_8;Point rook_points[1][20];rook_points[0][0] Point( w/4, 7*w/8 );rook_points[0][1] Point( 3*w/4, 7*w/8 );rook_points[0][2] Point( 3*w/4, 13*w/16 );rook_points[0][3] Point( 11*w/16, 13*w/16 );rook_points[0][4] Point( 19*w/32, 3*w/8 );rook_points[0][5] Point( 3*w/4, 3*w/8 );rook_points[0][6] Point( 3*w/4, w/8 );rook_points[0][7] Point( 26*w/40, w/8 );rook_points[0][8] Point( 26*w/40, w/4 );rook_points[0][9] Point( 22*w/40, w/4 );rook_points[0][10] Point( 22*w/40, w/8 );rook_points[0][11] Point( 18*w/40, w/8 );rook_points[0][12] Point( 18*w/40, w/4 );rook_points[0][13] Point( 14*w/40, w/4 );rook_points[0][14] Point( 14*w/40, w/8 );rook_points[0][15] Point( w/4, w/8 );rook_points[0][16] Point( w/4, 3*w/8 );rook_points[0][17] Point( 13*w/32, 3*w/8 );rook_points[0][18] Point( 5*w/16, 13*w/16 );rook_points[0][19] Point( w/4, 13*w/16 );const Point* ppt[1] { rook_points[0] };int npt[] { 20 };fillPoly( img,ppt,npt,1,Scalar( 255, 255, 255 ),lineType );
}void MyLine( Mat img, Point start, Point end )
{int thickness 2;int lineType LINE_8;line( img,start,end,Scalar( 0, 0, 0 ),thickness,lineType );
} Java:
import org.opencv.core.*;
import org.opencv.core.Point;
import org.opencv.highgui.HighGui;
import org.opencv.imgproc.Imgproc;import java.util.*;
import java.util.List;class GeometricDrawingRun{private static final int W 400;public void run(){String atom_window Drawing 1: Atom;String rook_window Drawing 2: Rook;Mat atom_image Mat.zeros( W, W, CvType.CV_8UC3 );Mat rook_image Mat.zeros( W, W, CvType.CV_8UC3 );MyEllipse( atom_image, 90.0 );MyEllipse( atom_image, 0.0 );MyEllipse( atom_image, 45.0 );MyEllipse( atom_image, -45.0 );MyFilledCircle( atom_image, new Point( W/2, W/2) );MyPolygon( rook_image );Imgproc.rectangle( rook_image,new Point( 0, 7*W/8 ),new Point( W, W),new Scalar( 0, 255, 255 ),-1,8,0 );MyLine( rook_image, new Point( 0, 15*W/16 ), new Point( W, 15*W/16 ) );MyLine( rook_image, new Point( W/4, 7*W/8 ), new Point( W/4, W ) );MyLine( rook_image, new Point( W/2, 7*W/8 ), new Point( W/2, W ) );MyLine( rook_image, new Point( 3*W/4, 7*W/8 ), new Point( 3*W/4, W ) );HighGui.imshow( atom_window, atom_image );HighGui.moveWindow( atom_window, 0, 200 );HighGui.imshow( rook_window, rook_image );HighGui.moveWindow( rook_window, W, 200 );HighGui.waitKey( 0 );System.exit(0);}private void MyEllipse( Mat img, double angle ) {int thickness 2;int lineType 8;int shift 0;Imgproc.ellipse( img,new Point( W/2, W/2 ),new Size( W/4, W/16 ),angle,0.0,360.0,new Scalar( 255, 0, 0 ),thickness,lineType,shift );}private void MyFilledCircle( Mat img, Point center ) {int thickness -1;int lineType 8;int shift 0;Imgproc.circle( img,center,W/32,new Scalar( 0, 0, 255 ),thickness,lineType,shift );}private void MyPolygon( Mat img ) {int lineType 8;int shift 0;Point[] rook_points new Point[20];rook_points[0] new Point( W/4, 7*W/8 );rook_points[1] new Point( 3*W/4, 7*W/8 );rook_points[2] new Point( 3*W/4, 13*W/16 );rook_points[3] new Point( 11*W/16, 13*W/16 );rook_points[4] new Point( 19*W/32, 3*W/8 );rook_points[5] new Point( 3*W/4, 3*W/8 );rook_points[6] new Point( 3*W/4, W/8 );rook_points[7] new Point( 26*W/40, W/8 );rook_points[8] new Point( 26*W/40, W/4 );rook_points[9] new Point( 22*W/40, W/4 );rook_points[10] new Point( 22*W/40, W/8 );rook_points[11] new Point( 18*W/40, W/8 );rook_points[12] new Point( 18*W/40, W/4 );rook_points[13] new Point( 14*W/40, W/4 );rook_points[14] new Point( 14*W/40, W/8 );rook_points[15] new Point( W/4, W/8 );rook_points[16] new Point( W/4, 3*W/8 );rook_points[17] new Point( 13*W/32, 3*W/8 );rook_points[18] new Point( 5*W/16, 13*W/16 );rook_points[19] new Point( W/4, 13*W/16 );MatOfPoint matPt new MatOfPoint();matPt.fromArray(rook_points);ListMatOfPoint ppt new ArrayListMatOfPoint();ppt.add(matPt);Imgproc.fillPoly(img,ppt,new Scalar( 255, 255, 255 ),lineType,shift,new Point(0,0) );}private void MyLine( Mat img, Point start, Point end ) {int thickness 2;int lineType 8;int shift 0;Imgproc.line( img,start,end,new Scalar( 0, 0, 0 ),thickness,lineType,shift );}
}public class BasicGeometricDrawing {public static void main(String[] args) {// Load the native library.System.loadLibrary(Core.NATIVE_LIBRARY_NAME);new GeometricDrawingRun().run();}
}
Python :
import cv2 as cv
import numpy as npW 400def my_ellipse(img, angle):thickness 2line_type 8cv.ellipse(img,(W // 2, W // 2),(W // 4, W // 16),angle,0,360,(255, 0, 0),thickness,line_type)def my_filled_circle(img, center):thickness -1line_type 8cv.circle(img,center,W // 32,(0, 0, 255),thickness,line_type)def my_polygon(img):line_type 8# Create some pointsppt np.array([[W / 4, 7 * W / 8], [3 * W / 4, 7 * W / 8],[3 * W / 4, 13 * W / 16], [11 * W / 16, 13 * W / 16],[19 * W / 32, 3 * W / 8], [3 * W / 4, 3 * W / 8],[3 * W / 4, W / 8], [26 * W / 40, W / 8],[26 * W / 40, W / 4], [22 * W / 40, W / 4],[22 * W / 40, W / 8], [18 * W / 40, W / 8],[18 * W / 40, W / 4], [14 * W / 40, W / 4],[14 * W / 40, W / 8], [W / 4, W / 8],[W / 4, 3 * W / 8], [13 * W / 32, 3 * W / 8],[5 * W / 16, 13 * W / 16], [W / 4, 13 * W / 16]], np.int32)ppt ppt.reshape((-1, 1, 2))cv.fillPoly(img, [ppt], (255, 255, 255), line_type)# Only drawind the lines would be:# cv.polylines(img, [ppt], True, (255, 0, 255), line_type)def my_line(img, start, end):thickness 2line_type 8cv.line(img,start,end,(0, 0, 0),thickness,line_type)atom_window Drawing 1: Atom
rook_window Drawing 2: Rook# Create black empty images
size W, W, 3
atom_image np.zeros(size, dtypenp.uint8)
rook_image np.zeros(size, dtypenp.uint8)# 1.a. Creating ellipses
my_ellipse(atom_image, 90)
my_ellipse(atom_image, 0)
my_ellipse(atom_image, 45)
my_ellipse(atom_image, -45)# 1.b. Creating circles
my_filled_circle(atom_image, (W // 2, W // 2))# 2. Draw a rook
# ------------------
# 2.a. Create a convex polygon
my_polygon(rook_image)cv.rectangle(rook_image,(0, 7 * W // 8),(W, W),(0, 255, 255),-1,8)# 2.c. Create a few lines
my_line(rook_image, (0, 15 * W // 16), (W, 15 * W // 16))
my_line(rook_image, (W // 4, 7 * W // 8), (W // 4, W))
my_line(rook_image, (W // 2, 7 * W // 8), (W // 2, W))
my_line(rook_image, (3 * W // 4, 7 * W // 8), (3 * W // 4, W))cv.imshow(atom_window, atom_image)
cv.moveWindow(atom_window, 0, 200)
cv.imshow(rook_window, rook_image)
cv.moveWindow(rook_window, W, 200)cv.waitKey(0)
cv.destroyAllWindows()
解释
由于我们计划绘制两个示例一个原子和一个车我们必须创建两个图像和两个窗口来显示它们。 C: char atom_window[] Drawing 1: Atom;char rook_window[] Drawing 2: Rook;Mat atom_image Mat::zeros( w, w, CV_8UC3 );Mat rook_image Mat::zeros( w, w, CV_8UC3 );
Java:
String atom_window Drawing 1: Atom;String rook_window Drawing 2: Rook; Mat atom_image Mat.zeros( W, W, CvType.CV_8UC3 );Mat rook_image Mat.zeros( W, W, CvType.CV_8UC3 );
Python:
# Windows names
atom_window Drawing 1: Atom
rook_window Drawing 2: Rook# Create black empty images
size W, W, 3
atom_image np.zeros(size, dtypenp.uint8)
rook_image np.zeros(size, dtypenp.uint8)
我们创建了函数来绘制不同的几何形状。例如为了绘制原子我们使用了 MyEllipse 和 MyFilledCircle MyEllipse( atom_image, 90 );MyEllipse( atom_image, 0 );MyEllipse( atom_image, 45 );MyEllipse( atom_image, -45 );MyFilledCircle( atom_image, Point( w/2, w/2) );
Java: MyEllipse( atom_image, 90.0 );MyEllipse( atom_image, 0.0 );MyEllipse( atom_image, 45.0 );MyEllipse( atom_image, -45.0 );MyFilledCircle( atom_image, new Point( W/2, W/2) );
Python:
# 1. Draw a simple atom:
# -----------------------# 1.a. Creating ellipses
my_ellipse(atom_image, 90)
my_ellipse(atom_image, 0)
my_ellipse(atom_image, 45)
my_ellipse(atom_image, -45)# 1.b. Creating circles
my_filled_circle(atom_image, (W // 2, W // 2))
为了绘制车我们使用了 MyLine、矩形和 MyPolygon MyPolygon( rook_image );rectangle( rook_image,Point( 0, 7*w/8 ),Point( w, w),Scalar( 0, 255, 255 ),FILLED,LINE_8 );MyLine( rook_image, Point( 0, 15*w/16 ), Point( w, 15*w/16 ) );MyLine( rook_image, Point( w/4, 7*w/8 ), Point( w/4, w ) );MyLine( rook_image, Point( w/2, 7*w/8 ), Point( w/2, w ) );MyLine( rook_image, Point( 3*w/4, 7*w/8 ), Point( 3*w/4, w ) );
Java: MyPolygon( rook_image );Imgproc.rectangle( rook_image,new Point( 0, 7*W/8 ),new Point( W, W),new Scalar( 0, 255, 255 ),-1,8,0 );MyLine( rook_image, new Point( 0, 15*W/16 ), new Point( W, 15*W/16 ) );MyLine( rook_image, new Point( W/4, 7*W/8 ), new Point( W/4, W ) );MyLine( rook_image, new Point( W/2, 7*W/8 ), new Point( W/2, W ) );MyLine( rook_image, new Point( 3*W/4, 7*W/8 ), new Point( 3*W/4, W ) );
Python:
# 2. Draw a rook
# ------------------
# 2.a. Create a convex polygon
my_polygon(rook_image)cv.rectangle(rook_image,(0, 7 * W // 8),(W, W),(0, 255, 255),-1,8) # 2.c. Create a few lines
my_line(rook_image, (0, 15 * W // 16), (W, 15 * W // 16))
my_line(rook_image, (W // 4, 7 * W // 8), (W // 4, W))
my_line(rook_image, (W // 2, 7 * W // 8), (W // 2, W))
my_line(rook_image, (3 * W // 4, 7 * W // 8), (3 * W // 4, W))
让我们检查一下这些函数中的每一个都包含什么
我的线条
void MyLine( Mat img, Point start, Point end )
{int thickness 2;int lineType LINE_8;line( img,start,end,Scalar( 0, 0, 0 ),thickness,lineType );
}
Java: private void MyLine( Mat img, Point start, Point end ) {int thickness 2;int lineType 8;int shift 0;Imgproc.line( img,start,end,new Scalar( 0, 0, 0 ),thickness,lineType,shift );}Python:
def my_line(img, start, end):thickness 2line_type 8cv.line(img,start,end,(0, 0, 0),thickness,line_type)
正如我们所看到的MyLine 只需调用函数 line 它执行以下操作 从点起点到点终点画一条线该线显示在图像 img 中线条颜色由 0 0 0 定义它是与黑色相对应的 RGB 值线条粗细设置为粗细在本例中为 2该线是 8 连接的线 lineType 8
MyEllipse椭圆
void MyEllipse( Mat img, double angle )
{int thickness 2;int lineType 8;ellipse( img,Point( w/2, w/2 ),Size( w/4, w/16 ),angle,0,360,Scalar( 255, 0, 0 ),thickness,lineType );
}
Java: private void MyEllipse( Mat img, double angle ) {int thickness 2;int lineType 8;int shift 0;Imgproc.ellipse( img,new Point( W/2, W/2 ),new Size( W/4, W/16 ),angle,0.0,360.0,new Scalar( 255, 0, 0 ),thickness,lineType,shift );}
Python:
def my_ellipse(img, angle):thickness 2line_type 8cv.ellipse(img,(W // 2, W // 2),(W // 4, W // 16),angle,0,360,(255, 0, 0),thickness,line_type)
从上面的代码中我们可以观察到函数 ellipse 绘制一个椭圆使得 椭圆显示在图像 img 中椭圆中心位于点 w/2 w/2 中并封闭在大小为 w/4 w/16 的盒子中椭圆是旋转角度度数椭圆在 0 到 360 度之间延伸一条弧线图形的颜色将是 255 0 0 表示 BGR 值中的蓝色。椭圆的厚度为 2。
MyFilledCircle圆
void MyFilledCircle( Mat img, Point center )
{circle( img,center,w/32,Scalar( 0, 0, 255 ),FILLED,LINE_8 );
}
Java: private void MyFilledCircle( Mat img, Point center ) {int thickness -1;int lineType 8;int shift 0;Imgproc.circle( img,center,W/32,new Scalar( 0, 0, 255 ),thickness,lineType,shift );}
Python:
def my_filled_circle(img, center):thickness -1line_type 8cv.circle(img,center,W // 32,(0, 0, 255),thickness,line_type)
与椭圆函数类似我们可以观察到 circle 接收为参数 将显示圆圈的图像img)圆的中心表示为点中心圆的半径w/32圆圈的颜色 0 0 255 在 BGR 中表示红色由于厚度 -1因此圆将被绘制填充。
MyPolygon
void MyPolygon( Mat img )
{int lineType LINE_8;Point rook_points[1][20];rook_points[0][0] Point( w/4, 7*w/8 );rook_points[0][1] Point( 3*w/4, 7*w/8 );rook_points[0][2] Point( 3*w/4, 13*w/16 );rook_points[0][3] Point( 11*w/16, 13*w/16 );rook_points[0][4] Point( 19*w/32, 3*w/8 );rook_points[0][5] Point( 3*w/4, 3*w/8 );rook_points[0][6] Point( 3*w/4, w/8 );rook_points[0][7] Point( 26*w/40, w/8 );rook_points[0][8] Point( 26*w/40, w/4 );rook_points[0][9] Point( 22*w/40, w/4 );rook_points[0][10] Point( 22*w/40, w/8 );rook_points[0][11] Point( 18*w/40, w/8 );rook_points[0][12] Point( 18*w/40, w/4 );rook_points[0][13] Point( 14*w/40, w/4 );rook_points[0][14] Point( 14*w/40, w/8 );rook_points[0][15] Point( w/4, w/8 );rook_points[0][16] Point( w/4, 3*w/8 );rook_points[0][17] Point( 13*w/32, 3*w/8 );rook_points[0][18] Point( 5*w/16, 13*w/16 );rook_points[0][19] Point( w/4, 13*w/16 );const Point* ppt[1] { rook_points[0] };int npt[] { 20 };fillPoly( img,ppt,npt,1,Scalar( 255, 255, 255 ),lineType );
}
Java: private void MyPolygon( Mat img ) {int lineType 8;int shift 0;Point[] rook_points new Point[20];rook_points[0] new Point( W/4, 7*W/8 );rook_points[1] new Point( 3*W/4, 7*W/8 );rook_points[2] new Point( 3*W/4, 13*W/16 );rook_points[3] new Point( 11*W/16, 13*W/16 );rook_points[4] new Point( 19*W/32, 3*W/8 );rook_points[5] new Point( 3*W/4, 3*W/8 );rook_points[6] new Point( 3*W/4, W/8 );rook_points[7] new Point( 26*W/40, W/8 );rook_points[8] new Point( 26*W/40, W/4 );rook_points[9] new Point( 22*W/40, W/4 );rook_points[10] new Point( 22*W/40, W/8 );rook_points[11] new Point( 18*W/40, W/8 );rook_points[12] new Point( 18*W/40, W/4 );rook_points[13] new Point( 14*W/40, W/4 );rook_points[14] new Point( 14*W/40, W/8 );rook_points[15] new Point( W/4, W/8 );rook_points[16] new Point( W/4, 3*W/8 );rook_points[17] new Point( 13*W/32, 3*W/8 );rook_points[18] new Point( 5*W/16, 13*W/16 );rook_points[19] new Point( W/4, 13*W/16 );MatOfPoint matPt new MatOfPoint();matPt.fromArray(rook_points);ListMatOfPoint ppt new ArrayListMatOfPoint();ppt.add(matPt);Imgproc.fillPoly(img,ppt,new Scalar( 255, 255, 255 ),lineType,shift,new Point(0,0) );}
Python:
def my_polygon(img):line_type 8# Create some pointsppt np.array([[W / 4, 7 * W / 8], [3 * W / 4, 7 * W / 8],[3 * W / 4, 13 * W / 16], [11 * W / 16, 13 * W / 16],[19 * W / 32, 3 * W / 8], [3 * W / 4, 3 * W / 8],[3 * W / 4, W / 8], [26 * W / 40, W / 8],[26 * W / 40, W / 4], [22 * W / 40, W / 4],[22 * W / 40, W / 8], [18 * W / 40, W / 8],[18 * W / 40, W / 4], [14 * W / 40, W / 4],[14 * W / 40, W / 8], [W / 4, W / 8],[W / 4, 3 * W / 8], [13 * W / 32, 3 * W / 8],[5 * W / 16, 13 * W / 16], [W / 4, 13 * W / 16]], np.int32)ppt ppt.reshape((-1, 1, 2))cv.fillPoly(img, [ppt], (255, 255, 255), line_type)# Only drawind the lines would be:# cv.polylines(img, [ppt], True, (255, 0, 255), line_type)
为了绘制一个填充的多边形我们使用函数 fillPoly 。我们注意到 多边形将在 img 上绘制多边形的顶点是 ppt 中的点集多边形的颜色由 255 255 255 定义这是白色的 BGR 值
矩形 rectangle( rook_image,Point( 0, 7*w/8 ),Point( w, w),Scalar( 0, 255, 255 ),FILLED,LINE_8 );
Java: Imgproc.rectangle( rook_image,new Point( 0, 7*W/8 ),new Point( W, W),new Scalar( 0, 255, 255 ),-1,8,0 );
Python: # 2.b. Creating rectangles
cv.rectangle(rook_image,(0, 7 * W // 8),(W, W),(0, 255, 255),-1,8)
最后我们有了cv::rectangle函数我们没有为这个家伙创建一个特殊函数。我们注意到 矩形将绘制在rook_image矩形的两个相对顶点由 0 7*w/8 和 w w 定义矩形的颜色由 0 255 255 给出它是黄色的 BGR 值由于厚度值由 FILLED -1 给出因此矩形将被填充。 结果
编译和运行程序应该会得到这样的结果 文章转载自: http://www.morning.fglth.cn.gov.cn.fglth.cn http://www.morning.nckjk.cn.gov.cn.nckjk.cn http://www.morning.mdpcz.cn.gov.cn.mdpcz.cn http://www.morning.rcmcw.cn.gov.cn.rcmcw.cn http://www.morning.807yy.cn.gov.cn.807yy.cn http://www.morning.lznqb.cn.gov.cn.lznqb.cn http://www.morning.roymf.cn.gov.cn.roymf.cn http://www.morning.zkgpg.cn.gov.cn.zkgpg.cn http://www.morning.rdbj.cn.gov.cn.rdbj.cn http://www.morning.hlfgm.cn.gov.cn.hlfgm.cn http://www.morning.wlqbr.cn.gov.cn.wlqbr.cn http://www.morning.wfyzs.cn.gov.cn.wfyzs.cn http://www.morning.sgqw.cn.gov.cn.sgqw.cn http://www.morning.lqljj.cn.gov.cn.lqljj.cn http://www.morning.gsrh.cn.gov.cn.gsrh.cn http://www.morning.yhljc.cn.gov.cn.yhljc.cn http://www.morning.cjwkf.cn.gov.cn.cjwkf.cn http://www.morning.hbhnh.cn.gov.cn.hbhnh.cn http://www.morning.iknty.cn.gov.cn.iknty.cn http://www.morning.xnnpy.cn.gov.cn.xnnpy.cn http://www.morning.clyhq.cn.gov.cn.clyhq.cn http://www.morning.hffjj.cn.gov.cn.hffjj.cn http://www.morning.gqtw.cn.gov.cn.gqtw.cn http://www.morning.wkws.cn.gov.cn.wkws.cn http://www.morning.rjrh.cn.gov.cn.rjrh.cn http://www.morning.bhbxd.cn.gov.cn.bhbxd.cn http://www.morning.bfybb.cn.gov.cn.bfybb.cn http://www.morning.yrxcn.cn.gov.cn.yrxcn.cn http://www.morning.rjqtq.cn.gov.cn.rjqtq.cn http://www.morning.krdxz.cn.gov.cn.krdxz.cn http://www.morning.nyqnk.cn.gov.cn.nyqnk.cn http://www.morning.btns.cn.gov.cn.btns.cn http://www.morning.zxzgr.cn.gov.cn.zxzgr.cn http://www.morning.xfxnq.cn.gov.cn.xfxnq.cn http://www.morning.fxzgw.com.gov.cn.fxzgw.com http://www.morning.ldynr.cn.gov.cn.ldynr.cn http://www.morning.xesrd.com.gov.cn.xesrd.com http://www.morning.jspnx.cn.gov.cn.jspnx.cn http://www.morning.drndl.cn.gov.cn.drndl.cn http://www.morning.tqjwx.cn.gov.cn.tqjwx.cn http://www.morning.fhyhr.cn.gov.cn.fhyhr.cn http://www.morning.xdnhw.cn.gov.cn.xdnhw.cn http://www.morning.qxlxs.cn.gov.cn.qxlxs.cn http://www.morning.qlhwy.cn.gov.cn.qlhwy.cn http://www.morning.dkqr.cn.gov.cn.dkqr.cn http://www.morning.tsnmt.cn.gov.cn.tsnmt.cn http://www.morning.yhplt.cn.gov.cn.yhplt.cn http://www.morning.bpmnh.cn.gov.cn.bpmnh.cn http://www.morning.xbdd.cn.gov.cn.xbdd.cn http://www.morning.grtwn.cn.gov.cn.grtwn.cn http://www.morning.hpmzs.cn.gov.cn.hpmzs.cn http://www.morning.jtfcd.cn.gov.cn.jtfcd.cn http://www.morning.pmjw.cn.gov.cn.pmjw.cn http://www.morning.kpcdc.cn.gov.cn.kpcdc.cn http://www.morning.lrskd.cn.gov.cn.lrskd.cn http://www.morning.rgpsq.cn.gov.cn.rgpsq.cn http://www.morning.zxqqx.cn.gov.cn.zxqqx.cn http://www.morning.qmxsx.cn.gov.cn.qmxsx.cn http://www.morning.rdmz.cn.gov.cn.rdmz.cn http://www.morning.zfrs.cn.gov.cn.zfrs.cn http://www.morning.gqtw.cn.gov.cn.gqtw.cn http://www.morning.yhtnr.cn.gov.cn.yhtnr.cn http://www.morning.hrtct.cn.gov.cn.hrtct.cn http://www.morning.xknsn.cn.gov.cn.xknsn.cn http://www.morning.prjty.cn.gov.cn.prjty.cn http://www.morning.plfy.cn.gov.cn.plfy.cn http://www.morning.tzlfc.cn.gov.cn.tzlfc.cn http://www.morning.jjzjn.cn.gov.cn.jjzjn.cn http://www.morning.lmbm.cn.gov.cn.lmbm.cn http://www.morning.ltcnd.cn.gov.cn.ltcnd.cn http://www.morning.dbhnx.cn.gov.cn.dbhnx.cn http://www.morning.sgcdr.com.gov.cn.sgcdr.com http://www.morning.gwwtm.cn.gov.cn.gwwtm.cn http://www.morning.nytqy.cn.gov.cn.nytqy.cn http://www.morning.qzfjl.cn.gov.cn.qzfjl.cn http://www.morning.crdtx.cn.gov.cn.crdtx.cn http://www.morning.1000sh.com.gov.cn.1000sh.com http://www.morning.qfkdt.cn.gov.cn.qfkdt.cn http://www.morning.zmwzg.cn.gov.cn.zmwzg.cn http://www.morning.lxhgj.cn.gov.cn.lxhgj.cn