Skip to content

Commit

Permalink
#7
Browse files Browse the repository at this point in the history
  • Loading branch information
xuncv committed Oct 11, 2021
1 parent aa08c70 commit ea93c74
Show file tree
Hide file tree
Showing 20 changed files with 994 additions and 122 deletions.
829 changes: 829 additions & 0 deletions debug.log

Large diffs are not rendered by default.

9 changes: 2 additions & 7 deletions default.aproj
Original file line number Diff line number Diff line change
Expand Up @@ -8,36 +8,31 @@
<file name="api.aardio" path="tools\api.aardio" comment="tools\api.aardio"/>
</folder>
<folder name="test" path="test" embed="true" comment="目录" local="false" ignored="false">
<file name="aardio1.aardio" path="test\aardio1.aardio" comment="test\aardio1.aardio"/>
<file name="aardio2.aardio" path="test\aardio2.aardio" comment="test\aardio2.aardio"/>
<file name="bitmap2Mat.aardio" path="test\bitmap2Mat.aardio" comment="test\bitmap2Mat.aardio"/>
<file name="coffee.aardio" path="test\coffee.aardio" comment="test\coffee.aardio"/>
<file name="common.aardio" path="test\common.aardio" comment="test\common.aardio"/>
<file name="compare.aardio" path="test\compare.aardio" comment="test\compare.aardio"/>
<file name="compare.py" path="test\compare.py" comment="test\compare.py"/>
<file name="contour.aardio" path="test\contour.aardio" comment="test\contour.aardio"/>
<file name="inRange.aardio" path="test\inRange.aardio" comment="test\inRange.aardio"/>
<file name="matTest.aardio" path="test\matTest.aardio" comment="test\matTest.aardio"/>
<file name="text.aardio" path="test\text.aardio" comment="test\text.aardio"/>
<file name="text2.aardio" path="test\text2.aardio" comment="test\text2.aardio"/>
<file name="textd.aardio" path="test\textd.aardio" comment="test\textd.aardio"/>
<file name="video.aardio" path="test\video.aardio" comment="test\video.aardio"/>
<folder name="core" path="test\core" comment="test\core" local="false" embed="false" ignored="false">
<file name="mat.aardio" path="test\core\mat.aardio" comment="test\core\mat.aardio"/>
<file name="sample.aardio" path="test\core\sample.aardio" comment="test\core\sample.aardio"/>
</folder>
<folder name="imgcodecs" path="test\imgcodecs" comment="test\imgcodecs">
<folder name="imgcodecs" path="test\imgcodecs" comment="test\imgcodecs" local="false" embed="false" ignored="false">
<file name="imgcodecs.aardio" path="test\imgcodecs\imgcodecs.aardio" comment="test\imgcodecs\imgcodecs.aardio"/>
</folder>
<folder name="imgproc" path="test\imgproc" comment="test\imgproc" local="false" embed="false" ignored="false">
<file name="blurWinform.aardio" path="test\imgproc\blurWinform.aardio" comment="test\imgproc\blurWinform.aardio"/>
<file name="clock.aardio" path="test\imgproc\clock.aardio" comment="test\imgproc\clock.aardio"/>
<file name="draw.aardio" path="test\imgproc\draw.aardio" comment="test\imgproc\draw.aardio"/>
<file name="hough.aardio" path="test\imgproc\hough.aardio" comment="test\imgproc\hough.aardio"/>
<file name="imgproc.aardio" path="test\imgproc\imgproc.aardio" comment="test\imgproc\imgproc.aardio"/>
<file name="morphology.aardio" path="test\imgproc\morphology.aardio" comment="test\imgproc\morphology.aardio"/>
<file name="person.aardio" path="test\imgproc\person.aardio" comment="test\imgproc\person.aardio"/>
<file name="threshold.aardio" path="test\imgproc\threshold.aardio" comment="test\imgproc\threshold.aardio"/>
<file name="clock.aardio" path="test\imgproc\clock.aardio" comment="test\imgproc\clock.aardio"/>
</folder>
<folder name="video" path="test\video" comment="test\video" local="false" embed="false" ignored="false">
<file name="subtractor.aardio" path="test\video\subtractor.aardio" comment="test\video\subtractor.aardio"/>
Expand Down
22 changes: 13 additions & 9 deletions lib/cv2/_.aardio
Original file line number Diff line number Diff line change
Expand Up @@ -391,23 +391,27 @@ distanceTransform = function(src,distanceType,maskSize){
}

findContours = function(src,mode=3/*_CV2_RETR_TREE*/,method=2/*_CV2_CHAIN_APPROX_SIMPLE*/){
var contours = ..cv2.vector.mat()
var hierarchy = ..cv2.Mat()
var err = dll.imgproc_findContours1_OutputArray(src.cvPtr,contours,hierarchy.cvPtr,mode,method,::POINT())
//var contours = ..cv2.vector.mat()
//var hierarchy = ..cv2.Mat()
//var err = dll.imgproc_findContours1_OutputArray(src.cvPtr,contours,hierarchy.cvPtr,mode,method,::POINT())
var contours = ..cv2.vector.vecPoint();
var hierarchy = ..cv2.vector.vec4i();
var err = dll.imgproc_findContours1_vector(src.cvPtr,contours,hierarchy,mode,method,::POINT())
return src,contours,hierarchy;
}

drawContours = function(src,contours,contourIdx=-1,color,thickness=1,lineType=0x10/*_CV2_LineTypes_LINE_AA*/){
var cType = type.rget(contours);
drawContours = function(src,contours,contourIdx=-1,color,thickness=1,lineType=0x10/*_CV2_LineTypes_LINE_AA*/,hierarchy=0 ){
/*var cType = type.rget(contours);
if(cType=="vectorOfMat"){
contours = contours.toArray()
}
}*/
/*
var contoursLength = #contours
if(contoursLength==0){
return ;
}
}*/
color = color : (::Scalar(0,255,0))
var err = dll.imgproc_drawContours_InputArray(src.cvPtr,{ ptr p[] = contours },contoursLength,contourIdx,color,thickness,lineType,null,0x7FFFFFFF/*_MAXLONG*/,::POINT())
var err = dll.imgproc_drawContours_vector(src.cvPtr,contours,contours.size,contourIdx,color,thickness,lineType,hierarchy,hiearchyLength,0x7FFFFFFF/*_MAXLONG*/,::POINT())
return src;
}

Expand Down Expand Up @@ -1000,7 +1004,7 @@ bitwise_xor() = !matObject.
bitwise_xor(.(输入图像1,输入图像2,腌膜 可选) = 对图像的每一个像素值进行逻辑异或操作
bitwise_not() = !matObject.
bitwise_not(.(输入图像1,输入图像2,腌膜 可选) = 对图像的每一个像素值进行逻辑非操作
split(.(输入图像) = 将图像拆分成BGR通道图像,返回B G R 3个mat对象
split(.(输入图像) = 将多通道矩阵分成多个单通道矩阵,返回多个Mat对象
merge() = !matObject.
merge(.(BGR通道图像数组)) = 将BGR通道图像合并
flip() = !matObject.
Expand Down
2 changes: 1 addition & 1 deletion lib/cv2/mat.aardio
Original file line number Diff line number Diff line change
Expand Up @@ -225,7 +225,7 @@ class Mat{

namespace Mat {
//var dll = ..cv2._dll;
import cv2.matExpr
import cv2.MatExpr
dll = ..raw.loadDll("~/lib/cv2/.res/OpenCvSharpExtern.dll","opencv2","cdecl")
core_Mat_convertTo = dll.api("core_Mat_convertTo","INT(pointer self, pointer m, int rtype, double alpha, double beta)")
core_Mat_mul = dll.api("core_Mat_mul","INT(pointer self, pointer m,double scale,struct ret)")
Expand Down
18 changes: 9 additions & 9 deletions lib/cv2/matExpr.aardio
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
//matExpr 矩阵表达式
//MatExpr 矩阵表达式
import util.metaProperty
namespace cv2

class matExpr{
class MatExpr{
ctor( ptr ){
if(!ptr){
err,ret = dll.core_MatExpr_new1({pointer value})
Expand All @@ -14,7 +14,7 @@ class matExpr{
};

toMat = function(){
var dst = ..cv2.mat()
var dst = ..cv2.Mat()
var err,ret = dll.core_MatExpr_toMat(this.ptr,dst.handle)
return dst;
}
Expand All @@ -29,32 +29,32 @@ class matExpr{
@_meta;
}

namespace matExpr{
namespace MatExpr{
//import cv2.mat
dll = ..raw.loadDll("~/lib/cv2/.res/OpenCvSharpExtern.dll","opencv2","cdecl")
core_operatorMultiply_MatExprDouble = dll.api("core_operatorMultiply_MatExprDouble","INT(pointer src,double scale,pointer& ret)")
core_MatExpr_toMat = dll.api("core_MatExpr_toMat","INT(pointer MatExpr,pointer Mat)")
_meta = ..util.metaProperty(
_type = "matExpr";
_type = "MatExpr";
// *
_mul = function(scale){
var err,ref = core_operatorMultiply_MatExprDouble(owner.ptr,scale,null)
return ..cv2.matExpr(ref);
return ..cv2.MatExpr(ref);
}
// +
_add = function(rt){
var err,ret = dll.core_operatorAdd_MatExprMat(owner.ptr,rt.handle,{pointer value})
return ..cv2.matExpr(ret.value);
return ..cv2.MatExpr(ret.value);
}
// -
_sub = function(rt){
var err,ret = dll.core_operatorSubtract_MatExprMat(owner.ptr,rt.handle,{pointer value})
return ..cv2.matExpr(ret.value);
return ..cv2.MatExpr(ret.value);
}
// /
_div = function(rt){
var err,ret = dll.core_operatorDivide_MatExprMat(owner.ptr,rt.handle,{pointer value})
return ..cv2.matExpr(ret.value);
return ..cv2.MatExpr(ret.value);
}
)
}
85 changes: 84 additions & 1 deletion lib/cv2/vector/_.aardio
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
//vector 动态数组库
import util.metaProperty
namespace cv2.vector
import console
var dll = ..raw.loadDll("~/lib/cv2/.res/OpenCvSharpExtern.dll","opencv2","cdecl")
class mat
{
Expand Down Expand Up @@ -693,7 +694,89 @@ namespace point{
}
}
)
}
}

class vecPoint{
ctor(size){
if(!size){
this.ptr = dll.vector_vector_Point_new1P();
}else {
this.ptr = dll.vector_vector_Point_new2P(size)
}
};

getSize1 = function(){
return dll.vector_vector_Point_getSize1(this.ptr)
}

getSize2 = function(){
var size = this.size
var err,ret = dll.vector_vector_Point_getSize2(this.ptr,{int n[]={length=size}})
return ret.n;
}
//copyFromVectorToArray
toArray = function(){
var size = this.size;
var size2 = this.getSize2()
var ret = {}
var ppoints = {ptr array[]={length=size}}
for(i=1;size;1){
ppoints.array[i] = ..raw.buffer({struct array[] ={::POINT(),length=size2[i]} } )
}
if(size){
var res = dll.vector_vector_Point_copy(this.ptr,ppoints )
for(i=1;#(ppoints.array);1){
ret[i] = ..raw.convertArray(ppoints.array[i],size2[i],::POINT())
}
}
return ppoints;
}

/*
// copyFromVectorToArray2
toArray = function(){
var size = this.size;
var size2 = this.getSize2()
var ret = {}
var points = class {
ctor( x,y ){
this = { struct array[] = {length = x;} }
for(i=1;x;1){
this.array[i] = { struct array[] = {length = y[i];::POINT()} }
}
};
}
ppoints = points(size,size2)
if(size){
var res = dll.vector_vector_Point_copy(this.ptr,ppoints )
}
return ppoints;
}
*/
release = function(){
if(this[["ptr"]]){
dll.vector_vector_Point_delete(this.ptr)
}
this[["ptr"]] = null
}
@_meta
}

namespace vecPoint{
_meta = ..util.metaProperty(
_type = "vectorOfVecPoint";
_topointer = function(){
return owner.ptr;
}
size = {
_get = function(){
return dll.vector_vector_Point_getSize1(owner.ptr);
}
};
)
}



/**intellisense(cv2.vector)
cv2.vector = opencv api动态数组库
Expand Down
4 changes: 2 additions & 2 deletions test/bitmap2Mat.aardio
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import console;
import cv2
//import cv2.mat
import gdip
bitmap = gdip.bitmap("./images/Lena.jpg")
m = cv2.mat(bitmap)
bitmap = gdip.bitmap("./assets/images/Lena.jpg")
m = cv2.Mat(bitmap)
cv2.imshow("m",m)
cv2.waitKey()
6 changes: 4 additions & 2 deletions test/common.aardio
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import cv2

//调整大小
img = cv2.imread("./images/Lena.jpg",1/*_CV2_IMREAD_COLOR*/)
img = cv2.imread("./assets/images/Lena.jpg",1/*_CV2_IMREAD_COLOR*/)
img = cv2.resize( img,::SIZE(500,500) )
cv2.imshow("调整大小",img)
//cv2.waitKey()
Expand All @@ -21,4 +21,6 @@ cv2.imshow( "copyMakeBorder",img )
img = cv2.bitwise_not(img)
cv2.imshow( "bitwise_not",img )

cv2.waitKey()
cv2.waitKey()

cv2.copyMakeBorder(
17 changes: 0 additions & 17 deletions test/compare.aardio

This file was deleted.

31 changes: 0 additions & 31 deletions test/compare.py

This file was deleted.

17 changes: 12 additions & 5 deletions test/contour.aardio
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,16 @@ ret,img = cv2.threshold(src,180,255,0x8/*_CV_THRESH_OTSU*/)
//cv2.imshow( "threshold",img )

img,contours,hierarchy = cv2.findContours(img)

import console
console.log(contours.size)
p = contours.toArray()
console.dump(contours.toArray())
src = cv2.imread( "./assets/images/contour.png",1 ) //读入彩色图像,便于标记
img = cv2.drawContours(src,contours,-1,::Scalar(0,255,0),5)
img = cv2.drawContours(src,p,-1,::Scalar(0,255,0),5,hierarchy,0)
/*
for(i=1;contours.size;1){
//console.dump(contours[i])
//continue
var ret = cv2.minAreaRect(contours[i])
var points = cv2.boxPoints(ret)
cv2.line( img,points[1],points[2],::Scalar(255,127,0),3)
Expand All @@ -19,6 +25,7 @@ for(i=1;contours.size;1){
cv2.rectangle( img,::POINT(rect.left,rect.top),::POINT(rect.left+rect.right,rect.top+rect.bottom),::Scalar(,,255),1 )
//凸包检测
var hull = cv2.convexHull(contours[i])
}
cv2.imshow( "contours",img )
cv2.waitKey()
}*/
//cv2.imshow( "contours",img )
//cv2.waitKey()
console.pause()
11 changes: 8 additions & 3 deletions test/core/mat.aardio
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,19 @@ import console;
import cv2
//从数组创建mat
data = {{255,0,0},{0,255,0},{0,0,255}};
m = cv2.mat(3,3,0x10/*_CV_8UC3*/,data)
m = cv2.Mat(3,3,0x10/*_CV_8UC3*/,data)
m = cv2.resize(m,,200,200)//放大200倍
//cv2.imshow("data",m)
//cv2.waitKey(0)
//矩阵合并
img = cv2.imread("./images/Lena.jpg")
img = cv2.imread("./assets/images/Lena.jpg")
hsv = cv2.cvtColor( img,0x28/*_CV2_COLOR_BGR2HSV*/)
h,s,v = cv2.split(hsv)
cv2.imshow("h",h)
cv2.imshow("s",s)
cv2.imshow("v",v)
dst = cv2.hconcat(img,img,img)
cv2.imshow("dst",dst)
dst2 = cv2.vconcat(img,img,img)
cv2.imshow("dst2",dst2)
cv2.waitKey(0)
cv2.waitKey(0)
2 changes: 1 addition & 1 deletion test/core/sample.aardio
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import cv2
img = cv2.imread("./images/Lena.jpg")
img = cv2.imread("./assets/images/Lena.jpg")
dst = cv2.reduce(img,-1,0,4/*_CV_32S*/)
//cv2.imshow("dst",dst)
import console
Expand Down

0 comments on commit ea93c74

Please sign in to comment.